/**
 * 对象扩展
 */
let name = "aqie"
let age = 18
let hobby = 'sing'
// 对象 key 是变量
const obj = {
  name,
  age,
  skill:{
    name:'code',
    year: 11
  },
  [hobby]:'骆驼',
  // 对象中方法简写不能使用箭头函数
  study(){
    console.log(`${this.name}正在学习`)
  }
}

console.log(obj)
obj.study()

// 判断两个对象是否严格相等, 对象引用类型 不相等
console.log(Object.is(2 == '2')) // false

let x = {
  a:3,
  b:4
}

// 对象复制
let y = {...x} 
let z = x
let w = {}
Object.assign(w,x)  // x 合并到 w
console.log(y, z, w)

// 判断对象是否包含某个属性
console.log('a' in w, 'c' in w, 3 in w)

// 数组 判断 3 位置是否有值
console.log(3 in [1,2,3]) // false

// 对象遍历
for(let key in obj){
  console.log(key, obj[key])
}

Object.keys(obj).forEach(key =>{
  console.log(key, obj[key])
})

// es6
Object.getOwnPropertyNames(obj).forEach(key =>{
  console.log(key, obj[key])
})

// es6
Reflect.ownKeys(obj).forEach(key =>{
  console.log(key, obj[key])
})




